package com.bymedia.conexion;


import java.util.Vector;
import net.sourceforge.floggy.persistence.FloggyException;
import net.sourceforge.floggy.persistence.ObjectSet;
import net.sourceforge.floggy.persistence.Persistable;
import net.sourceforge.floggy.persistence.PersistableManager;

/**
 * 
 * @author Arley Mauricio Duarte Palomino
 * @version 1.0
 */
public class MensajesPendientesBLL extends Thread {

    private static MensajesPendientesBLL instance;
    private Vector vItems;

    private MensajesPendientesBLL() {
        vItems = new Vector();

        ObjectSet vReferencias = null;
        //1. Recupera las rutas almacenadas
        try {
            PersistableManager pm = PersistableManager.getInstance();
            vReferencias = pm.find(DatosPendientes.class, null, null);
            for (int i = 0; i < vReferencias.size(); i++) {
            	DatosPendientes p = (DatosPendientes) vReferencias.get(i);
                vItems.addElement(p);
            }

        } catch (FloggyException ex) {
            ex.printStackTrace();
        }
    }

    public static MensajesPendientesBLL getMensajesPendientesBLL() {
        if (instance == null) {
            instance = new MensajesPendientesBLL();
        }
        return instance;
    }

    public void add(DatosPendientes item) {
        vItems.addElement(item);

        try {
            PersistableManager pm = PersistableManager.getInstance();
            pm.save((Persistable) item);
     

        } catch (FloggyException ex) {
            ex.printStackTrace();
        }
    }


    public void delete(DatosPendientes item) {
        
        try {
            vItems.removeElement(item);
            PersistableManager pm = PersistableManager.getInstance();
            pm.delete((Persistable) item);
            
        } catch (FloggyException ex) {
            ex.printStackTrace();
        }
    }

    public boolean existenMensajesPendientes() {
    	return !vItems.isEmpty();  	
    }

    public void enviarMensajesPendientes() {
        run();
    }

    public void run() {
        for (int i = 0; i < vItems.size(); i++) {
            InvokeConnection invokeConnection = new InvokeConnection();
            DatosPendientes mensajePendiente = (DatosPendientes) vItems.elementAt(i);
  
            if (invokeConnection.connect(mensajePendiente.getNm()).equals("OK")) {
                System.out.println("MensajesPendientesBLL Enviado: " + mensajePendiente.getNm());
                delete(mensajePendiente);
            }
        }
    }
    
    public Vector getVectorDatos(){
    	return vItems;
    }


}
